package netty.test3Selector;

import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;

public class NioClient {
    public static void main(String[] args) throws IOException {
        //1,得到一个网络通道
        SocketChannel socketChannel = SocketChannel.open();
        //2,设置非阻塞模式
        socketChannel.configureBlocking(false);
        InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 6666);
        //3,因为是非阻塞的，connect 方法会立即返回
        if(!socketChannel.connect(inetSocketAddress)){
            while(!socketChannel.finishConnect()){//不会阻塞立即返回后，连接工作可能还在进行中
                System.out.println("因为连接需要时间，客户端不会阻塞，可以做其他工作");
            }
        }

        //4，连接成功可以发送数据了。。。
        String str="connect is success";
        // warp（）就是把一个字节数组放到 buffer中，简便方法（如果不用这个的话，就要先 ByteBuffer.allocate(1024),
        // 然后再 put 进去，这个可以根据参数的大小自动分配）
        ByteBuffer buffer = ByteBuffer.wrap(str.getBytes());

        //6，发送数据(就是将buffer 数据写入到channel)
        socketChannel.write(buffer);
        //7,这步是没有的（把代码停在这（读一个字符））
        System.in.read();
    }
}
